package cn.kgc.mybatis.day05.mapper;

import cn.kgc.mybatis.day05.entity.Emp;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @author 课工场
 * @date 2024/10/30
 * @description 注解开发  可以通过不同的注解编写sql语句实现表的crud操作
 * <p>
 * 注解     本质就是标识    反射
 * 元注解  修饰注解的注解
 * @Documented 该注解在生成api文档时会体现在文档中
 * @Retention(RetentionPolicy.RUNTIME) 注解的生命周期  SOURCE  CLASS RUNTIME
 * @Target(ElementType.METHOD) 标识当前注解可以使用的位置
 * jdk提供注解
 * 自定义注解  @interface
 */
@CacheNamespace    // 开启二级缓存  注解形式
// @CacheNamespaceRef
public interface EmpMapper {

    // @Select("select *  from emp")
    // @Results(value = {
    //         @Result(property = "id", column = "id"),
    //         @Result(property = "age", column = "age"),
    //         @Result(property = "empName", column = "ename"),
    //         @Result(property = "deptNumber", column = "deptno")
    // }, id = "empMap")
    List<Emp> selectEmpList();

    // @Select("select *  from emp where id = #{id}")
    // @ResultMap("empMap")
    Emp selectOne(Integer id);

    @Insert("insert into emp (ename, age, deptno)values(#{empName},#{age},#{deptNumber}) ")
    Integer addEmp(Emp emp);

    @Update("update emp set ename = #{empName}, age=#{age}, deptno=#{deptNumber} where id = #{id}")
    Integer updateEmp(Emp emp);

    @Delete("delete  from emp where id = #{id}")
    Integer deleteOne(Integer id);

}
